From fc19a999ec156f7f746c7928f1828f40a01c5b90 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Wed, 9 Dec 2015 12:39:43 +0100 Subject: [PATCH] gdk: Manage GDK_TOUCH_CANCEL events on gdk_windowing_got_event() These events must get active/implicit grabs undone, and can be done on client-side code. https://bugzilla.gnome.org/show_bug.cgi?id=759309 --- gdk/gdkwindow.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c index bd32ad12c7..6f9aae803f 100644 --- a/gdk/gdkwindow.c +++ b/gdk/gdkwindow.c @@ -9579,7 +9579,8 @@ _gdk_windowing_got_event (GdkDisplay *display, goto out; } - if (!(is_button_type (event->type) || + if (!(event->type == GDK_TOUCH_CANCEL || + is_button_type (event->type) || is_motion_type (event->type) || is_gesture_type (event->type)) || event_window->window_type == GDK_WINDOW_ROOT) @@ -9684,13 +9685,14 @@ _gdk_windowing_got_event (GdkDisplay *display, unlink_event = proxy_gesture_event (event, serial); if ((event->type == GDK_BUTTON_RELEASE || + event->type == GDK_TOUCH_CANCEL || event->type == GDK_TOUCH_END) && !event->any.send_event) { GdkEventSequence *sequence; sequence = gdk_event_get_event_sequence (event); - if (event->type == GDK_TOUCH_END && sequence) + if (sequence) { _gdk_display_end_touch_grab (display, device, sequence); } -- 2.30.2